因为后端使用 shiro 控制权限, 用户登录的时候返回的权限信息类似于
1 | ['test/view', 'test/add', 'test/edit']; |
仔细看了下 ant design pro 的权限控制组件后发现,可以很好地结合使用
1. mock 登录返回数据
1 | if (password === '123' && userName === 'wxc') { |
2.修改 antd pro 的权限组件
因为框架已经自带了权限组件,但是这里的权限组件是通过’admin’,’user’这种字符串判断,而我们是登录后返回一个数组,所以要稍微修改下里面的权限判断逻辑
1 | // src/components/Authorized/CheckPermissions.js |
修改完毕之后就可以正常使用权限组件了
3.记录用户权限
登录获取到接口返回的权限信息后,通过工具类中封装好的setAuthority方法在 localStorage 中保存权限信息
1 | import { setAuthority } from '../utils/authority'; |
效果如下:
保存权限信息完毕之后,还需要通过reloadAuthorized方法来刷新权限组件
1 | import { reloadAuthorized } from '../utils/Authorized'; |
下面就可以正常使用 ant design pro 的权限控制功能了
4.权限控制方式
####控制菜单显示
这种方式下,路由导向也会做相应的控制,推荐使用这种方式
1 | // src/common/menu.js |
效果如下: